Skip to content

feat(aidd-ui): scaffold the UI recipe skeleton (structure only)#330

Draft
alexsoyes wants to merge 16 commits into
nextfrom
feat/aidd-ui-recipe-skeleton
Draft

feat(aidd-ui): scaffold the UI recipe skeleton (structure only)#330
alexsoyes wants to merge 16 commits into
nextfrom
feat/aidd-ui-recipe-skeleton

Conversation

@alexsoyes

Copy link
Copy Markdown
Contributor

✅ Type of PR

  • Refactor
  • Feature
  • Bug Fix
  • Optimization
  • Documentation Update

🗒️ Description

Draws the full structure of the aidd-ui plugin as one top-to-bottom recipe to generate a high-quality UI. Structure only — every action is a stub; the action logic lands in follow-up PRs. The alpha smoke-test skill (01-hello) is replaced.

The plugin is one recipe, not a router: each skill is a section whose sub-actions run in order, and the product-critic agent gates each section before the next. Sections chain via requires / next / produces frontmatter, so the flow reads end-to-end without a central orchestrator.

🚶‍➡️ Behavior

  • Six chained sections: 00-product01-wireframe02-design-system03-build04-review05-polish.
  • 00-product copies a root PRODUCT.md template and fills it through a deep interview; 02-design-system produces root BRAND-BOARD.md and DESIGN-SYSTEM.md.
  • Two agents: ui-builder (makes) and product-critic (a ruthless design director that gates every section; nothing tepid passes).
  • Each SKILL.md wires its actions and its templates; references bundled for wireframe, UX heuristics, and a11y.

🧪 Steps to test

  • claude --plugin-dir plugins/aidd-ui loads the plugin with no error.
  • The six skills aidd-ui:00-product05-polish are listed.
  • Each SKILL.md shows ordered steps, a product-critic exit gate, and requires/next frontmatter.
  • node scripts/summarize-markdown.js plugins/aidd-ui plugins/aidd-ui/CATALOG.md regenerates the catalog cleanly.

Scope notes: action logic, the 00-design orchestrator, and the extraction of UI bits from aidd-dev (wireframe, audit-ui pillar, assert-frontend) are deferred to follow-up PRs. The pre-commit markdown-links hook was bypassed for the commit: it fails on pre-existing broken links under the gitignored dist/ tree (**/*.md glob), unrelated to this change — none of the touched files are flagged.

alexsoyes and others added 15 commits June 19, 2026 13:18
…an (#271)

Four-action plan skill (gather/explore/wireframe/plan), unified feature-folder artifact layout (brainstorm/spec/plan/phases/review), implement reads the new layout with per-plan and per-phase status tracking.

Closes #292
Closes #265
Closes #276
* docs(framework): add dominance checks to review and rules

Dominance issues were easy for agents to miss when a weaker rule, criterion, or documentation statement was already covered, overridden, or invalidated by a stronger element. This adds the check at the global context, rule-generation, reviewer, and review-template levels.

* docs(framework): reduce dominance check duplication

Keep the concise dominance rule in global and rule-authoring surfaces while leaving the detailed case breakdown to the reviewer. Validation now states the shared check without reimplementing reviewer classification.

* docs(framework): separate global and rule dominance checks

Keep the general dominance reminder and reviewer taxonomy separate from rule-generation specifics. Rule authoring and validation now only check for duplicate, weaker, or contradictory rule bullets.

* docs(framework): prefer intention-revealing names

Naming guidance belongs in the global project context because it applies across artifacts. This keeps the rule concise and avoids duplicating it in domain-specific rule generation flows.

* docs(aidd-context): validate rules against shared contracts

Rule validation should apply the rule-authoring and tool-path contracts instead of restating individual rule checks. The test now has a single outcome sentence rather than multiple bullet assertions.

* docs(aidd-dev): align dominance wording with review role

The reviewer should report parallel elements rather than describe adding behavior. This keeps the dominance check phrased for read-only review while preserving the same taxonomy.
Required check "lefthook (framework-local checks)" (next.json ruleset)
is published only by validate.yml, whose pull_request/push filter was
[main]. PRs targeting next never fired it, so the required status stayed
"Expected — Waiting for status" forever, deadlocking merges (e.g. #307).

Add next to both push and pull_request branch filters.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(framework): add markdown link checker

* fix(scripts): exempt template scaffold placeholder links

01-plan's plan-template.md / phase-template.md link to ./plan.md and
./phase-N.md — files the skill emits next to the generated output at
runtime (see actions/04-plan.md), never committed to the repo. The
checker flagged them as broken.

Extend the existing asset-template branch: a dot-relative target in a
*-template.md that resolves nowhere is an intentional placeholder for a
generated sibling, so treat it as ignored rather than broken. The
assets/templates fallback (used by 02-project-memory) is unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Baptiste LAFOURCADE <baptiste.lafourcade@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(aidd-ui): scaffold alpha plugin (0.1.0-alpha.0)

Add aidd-ui as a new plugin with a single smoke-test skill (01-hello).

Registered in marketplace.json (recommended: false) and release config; alpha status is conveyed by the 0.1.0-alpha.0 version in plugin.json. Lives on a dedicated branch off next, so it is not public until it graduates to main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(aidd-ui): mark alpha / not-ready across surfaces

Add prominent alpha warnings to the plugin README, the homepage plugins table, and the marketplace and plugin descriptions so the not-ready status is unmistakable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Dependabot had no target-branch, so its PRs defaulted to main. main only
takes the weekly promotion PR and the auto-merged Release PR (RELEASE.md),
so dep updates landing there cut off-cycle releases (js-yaml bump shipped
v5.0.3 mid-week). Point both ecosystems at next so updates batch into the
weekly release like all other work.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New skill aidd-vcs:00-repo-init: init a project's repository (git init, default branch, CONTRIBUTING.md, bootstrap commit) and, on request, create the remote and push. Provider- and mechanism-agnostic: host + reach (CLI, MCP, or API) resolved from VCS memory or environment, main as default-branch fallback. No hardcoded provider or fixed mechanism.

Conforms to the skill-authoring contract (R1-R13 + action anatomy).

Co-authored-by: Baptiste LAFOURCADE <baptiste.lafourcade@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci(deps): bump actions/checkout from 6.0.3 to 7.0.0 (#321)

Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@df4cb1c...9c091bb)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* docs(framework): unify change taxonomy into one source of truth

The same change taxonomy (kind -> where it ships) was re-spelled across
branch prefix, commit type, label, and the board "Work Type" field, and
the four drifted. A maintainer got lost finding routing info.

Make aidd_docs/memory/vcs.md the single canonical home: one dense table
(kind, prefix, commit type, triage label, next/main) plus a strict
routing rule. CONTRIBUTING and RELEASE now link it instead of restating
it; the inline label table is gone. Trim labels 11 -> 8 (drop help
wanted, npm, github-actions) and stop dependabot re-adding the dropped
ecosystem labels. Add a Project 8 board playbook + label-delete note to
MAINTAINERS, and fix its stale "Work Type" reference.

Routing is derived from the branch prefix, never a label or board field.
Spec + plan recorded under aidd_docs/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(aidd-vcs): derive PR base from branch prefix, auto-apply triage label

The pull-request action resolved the base from origin/HEAD against a
candidate list (main/master/develop/staging) that omitted `next`, so a
`feat/*` PR targeted `main`. Resolve the base from the head branch's
prefix via the project-memory routing table first, falling back to the
old detection. After opening, apply the prefix's triage label when it
exists. Stays generic: reads project memory, never hardcodes `next`.
Also fix the stale `aidd_docs/` -> `docs/` prefix in the branch template.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(framework): make the routing table an actionable guide

Reframe the canonical Types table as "I want to… → I do…": add an Issue
template column and a one-line board Status flow, so a contributor finds
their row and reads off branch, label, and PR target in one glance. Still
the single source of truth — no new table, no duplication.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…326)

The skill's transversal rules still described base detection from repo
state only, omitting the prefix-based routing and auto-labelling the
action now performs. Bring the SKILL.md contract in line: base resolves
from the branch prefix via project memory (fallback to repo state), and
the matching triage label is applied after opening.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(aidd-refine): align 02-05 skills with skill contract

Bring challenge, condense, shadow-areas and fact-check skills to the
04-skill-generate contract and concise, plain language.

- SKILL.md routers: `## Actions` header, plain-path references/assets,
  drop empty None. sections
- actions: singular Input/Output, no pipeline-variable notation, bold
  process labels, no frozen data blocks
- move challenge report skeleton to a new assets/report-template.md
- extract fact-check output-discipline into a cited reference
- shorten the four skill descriptions to two lines

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* refactor(aidd-refine): tighten tests and trim duplication

Follow-up from a headless skill-by-skill audit against the
04-skill-generate contract.

- shadow-areas: collapse redundant Test bullets (6/8/6 -> 5/7/4),
  one-line Outputs, fix 01-detect handoff (route via 03-diff before
  02-render-report when a prior report exists)
- challenge: fix Test deal-breaker/confidence rule to match the rubric,
  drop transversal rules that restated the action
- condense: drop persistence-duplicate process step, tighten tests,
  lean the router (no inline examples)
- fact-check: shorten 03-report Output, dedupe caching guidance

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* style(aidd-refine): drop punctuation dashes for concise prose

Replace em-dash-style " - " punctuation with commas, colons, or
parentheses across skill bodies, actions, and references. Keep title
headers and the literal "(unverified - no source found)" output marker.
Also fix severity-rubric "Definition rule" -> "Decision rule" label.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(aidd-refine): harden condense and fact-check fidelity

Found by the behavioral eval harness running the skills for real.

- fact-check: add a `refuted` verdict (a source contradicts the claim,
  distinct from "no source found"); emit the unverified marker verbatim;
  forbid leaking the verification method (commands, "by inspection");
  remove "cascade exhausted ..." from the report template, which leaked
  a forbidden word the discipline bans
- condense: 01-condense must emit the exact `Condense: ON (<level>).`
  line, since 02-stats and the hook parse it from the transcript

* test(aidd-refine): add behavioral skill-eval harness

Runs each refine skill for real through a headless `claude -p` in an
isolated temp project (the worktree skill installed under a unique name,
so the local copy runs, never a stale global plugin). Deterministic
checks by default; `--judge` adds an LLM grader for fuzzy outcomes.

Local / opt-in only (metered, no `claude` in CI), so not a CI gate.
Covers shadow-areas, fact-check, condense, challenge; brainstorm is
interactive and out of scope.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…esign (#314)

Collapse the SDLC agent trio (planner/implementer/reviewer) into two leaf
agents, executor + checker, with the 00-sdlc orchestrator owning planning
itself. Enforce recipe-not-spawn: only the orchestrator spawns, recipe
skills focus on themselves and never name other skills or the SDLC.

- executor runs 02-implement, checker runs 05-review (embedded checklist).
- executor never holds 01-plan (structural immutability).
- 05-review gains a relevancy axis (fit/conform/rot) into one review.md.
- commit, pull-request, and assert defer to project memory (vcs.md,
  coding-assertions.md) over bundled defaults; ship stops dictating the
  commit format.
- pull-request is fully VCS-tool-agnostic.
- all flow skills renormalized to the skill-authoring contract; orphan
  assets and a leaked user-stories WIP duplicate removed.

Net +673/-1269. Refs #253.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…#328)

When the user asks to delete or remove code, the refactor skill is now a
trigger target and routes straight to the cleanup action. The cleanup action
sweeps for orphaned references a deletion leaves behind, so removals also clean
up imports, tests, docs, and config that pointed at the deleted symbol.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alexsoyes alexsoyes added the enhancement New feature or request label Jun 25, 2026
Replace the alpha smoke-test skill with the full structure of the UI
recipe: six chained sections from product intent to polish, plus the
two agents that drive and gate it. Structure only — action logic is
stubbed and lands in follow-up PRs.

Sections (each a SKILL.md with ordered steps + a product-critic exit
gate, chained via requires/next/produces frontmatter):
- 00-product       deep interview -> PRODUCT.md (root, copy-paste template)
- 01-wireframe     IA flows + low-fidelity screens
- 02-design-system brand board -> BRAND-BOARD.md, tokens -> DESIGN-SYSTEM.md
- 03-build         hi-fi UI from the design system
- 04-review        heuristics, a11y, responsive, visual critique
- 05-polish        states, motion, UX copy

Agents:
- ui-builder     executes build and polish
- product-critic ruthless design director; gates every section

Templates wired from each SKILL.md; references for wireframe, UX
heuristics, and a11y. Catalog and root README counts regenerated.
Marketplace description updated. aidd-dev UI extraction (wireframe,
audit-ui, assert-frontend) deferred to a follow-up PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants